use sociology, clear
split field, p(";")
bys field1: gen x = cond(_N==1,1,_n)
drop if x>1
drop if missing(field1)
keep field1
gen n = _n

***export

split field, p("; ")
bys field2: gen x = cond(_N==1,1,_n)
drop if x>1
drop if missing(field2)
keep field2

**export

split field, p("; ")
bys field3: gen x = cond(_N==1,1,_n)
drop if x>1
drop if missing(field3)
keep field3

**export

split field, p("; ")
bys field4: gen x = cond(_N==1,1,_n)
drop if x>1
drop if missing(field4)
keep field4

**export then combine and save
save fields


**** turning into subject list
gen lfield = length(field1)
bys n: egen mlfield = min(lfield)
drop if lfield>mlfield
keep field n
export 

*******
use sociology, clear
split field, p("; ")
keep articleid field1 field2 field3 field4

rename field1 field
joinby field using fields, unmatched(master)
drop _merge 
drop field
rename n field1

rename field2 field
joinby field using fields, unmatched(master)
drop _merge 
drop field
rename n field2

rename field3 field
joinby field using fields, unmatched(master)
drop _merge 
drop field
rename n field3

rename field4 field
joinby field using fields, unmatched(master)
drop _merge 
drop field
rename n field4

replace field2=. if field1==field2
replace field3=. if field1==field3
replace field4=. if field1==field4
replace field3=. if field2==field3
replace field4=. if field2==field4
replace field4=. if field3==field4

forvalues i = 1(1)148 {
gen sj`i' =1 if field1==`i'
replace sj`i'=1 if field2==`i'
replace sj`i'=1 if field3==`i'
replace sj`i'=1 if field4==`i'
replace sj`i'=0 if missing(sj`i')
}

egen s = rowtotal(sj1 sj2 sj3 sj4 sj5 sj6 sj7 sj8 sj9 sj10 sj11 sj12 sj13 sj14 sj15 sj16 sj17 sj18 sj19 sj20 sj21 sj22 sj23 sj24 sj25 sj26 sj27 sj28 sj29 sj30 sj31 sj32 sj33 sj34 sj35 sj36 sj37 sj38 sj39 sj40 sj41 sj42 sj43 sj44 sj45 sj46 sj47 sj48 sj49 sj50 sj51 sj52 sj53 sj54 sj55 sj56 sj57 sj58 sj59 sj60 sj61 sj62 sj63 sj64 sj65 sj66 sj67 sj68 sj69 sj70 sj71 sj72 sj73 sj74 sj75 sj76 sj77 sj78 sj79 sj80 sj81 sj82 sj83 sj84 sj85 sj86 sj87 sj88 sj89 sj90 sj91 sj92 sj93 sj94 sj95 sj96 sj97 sj98 sj99 sj100 sj101 sj102 sj103 sj104 sj105 sj106 sj107 sj108 sj109 sj110 sj111 sj112 sj113 sj114 sj115 sj116 sj117 sj118 sj119 sj120 sj121 sj122 sj123 sj124 sj125 sj126 sj127 sj128 sj129 sj130 sj131 sj132 sj133 sj134 sj135 sj136 sj137 sj138 sj139 sj140 sj141 sj142 sj143 sj144 sj145 sj146 sj147 sj148)

forvalues i = 1(1)148 {
replace sj`i' = sj`i'/s
}

drop field1 field2 field3 field4 s

egen s = rowtotal(sj1 sj2 sj3 sj4 sj5 sj6 sj7 sj8 sj9 sj10 sj11 sj12 sj13 sj14 sj15 sj16 sj17 sj18 sj19 sj20 sj21 sj22 sj23 sj24 sj25 sj26 sj27 sj28 sj29 sj30 sj31 sj32 sj33 sj34 sj35 sj36 sj37 sj38 sj39 sj40 sj41 sj42 sj43 sj44 sj45 sj46 sj47 sj48 sj49 sj50 sj51 sj52 sj53 sj54 sj55 sj56 sj57 sj58 sj59 sj60 sj61 sj62 sj63 sj64 sj65 sj66 sj67 sj68 sj69 sj70 sj71 sj72 sj73 sj74 sj75 sj76 sj77 sj78 sj79 sj80 sj81 sj82 sj83 sj84 sj85 sj86 sj87 sj88 sj89 sj90 sj91 sj92 sj93 sj94 sj95 sj96 sj97 sj98 sj99 sj100 sj101 sj102 sj103 sj104 sj105 sj106 sj107 sj108 sj109 sj110 sj111 sj112 sj113 sj114 sj115 sj116 sj117 sj118 sj119 sj120 sj121 sj122 sj123 sj124 sj125 sj126 sj127 sj128 sj129 sj130 sj131 sj132 sj133 sj134 sj135 sj136 sj137 sj138 sj139 sj140 sj141 sj142 sj143 sj144 sj145 sj146 sj147 sj148)
gen sj149=1 if s==0
replace sj149=0 if s==1
drop s

save sj, replace

